SPSS FILTER 快速简易教程

作者:Ruben Geert van den Berg,归档于 BasicsSPSS A-Z

SPSS FILTER(SPSS 筛选)功能可以临时从所有数据分析中排除一部分个案。如果要从数据_编辑_中排除个案,请改用 DO IFIF

快速概览

  • SPSS 筛选基础
  • 示例 1 - 排除具有多个缺失值的个案
  • 示例 2 - 基于 2 个变量进行筛选
  • 示例 3 - 不使用筛选变量进行筛选
  • 技巧 - 具有内置筛选器的命令
  • 警告 - 使用筛选器进行数据编辑

SPSS FILTER - 示例数据

在本教程的所有示例中,我将使用 bank_clean.sav 文件(如下所示)。此文件包含小型银行员工调查的数据。您可以随意下载这些数据并自行重新运行示例。

SPSS Filter Tutorial Variable View

SPSS 筛选基础

SPSS 中进行筛选通常涉及 4 个步骤:

  1. 创建一个筛选变量(filter variable);
  2. 激活筛选变量;
  3. 运行一个或多个分析,例如 相关性分析(correlations)、方差分析(ANOVA)或 卡方检验(chi-square test),并使筛选变量生效;
  4. 停用筛选变量。

理论上,_任何_变量都可以用作筛选变量。激活后,在筛选变量上具有以下值的个案将被排除在所有分析之外,直到您停用筛选器:

  • 零值(zeroes)
  • 用户缺失值(user missing values)
  • 系统缺失值(system missing values)

为了清楚起见,我建议您仅使用包含 0 或 1 的筛选变量来筛选_每个_个案。理论够了,让我们开始实践。

示例 1 - 排除具有多个缺失值的个案

在数据的末尾,我们找到 9 个评定量表:q1 到 q9。也许我们想对它们运行 因子分析(factor analysis),或者将它们用作 回归分析(regression analysis)中的预测变量。在任何情况下,我们可能都想排除在这些变量上具有多个缺失值的个案。我们将首先通过运行以下 语法(syntax)来计算它们的数量。

***创建新变量,用于保存 q1 到 q9 的缺失值数量。
COMPUTE mis_1 = NMISS(q1 TO q9).

***应用变量标签。
VARIABLE LABELS mis_1 'Number of missings on q1 to q9'.

***检查频率。
FREQUENCIES mis_1.

结果

SPSS Frequency Table Without Filter

基于此频率分布,我们决定排除在 q1 到 q9 上具有 3 个或更多缺失值的 8 个个案。我们将使用一个简单的 RECODE(重新编码)来创建筛选变量,如下所示。

***将 mis_1 重新编码为筛选变量。
RECODE mis_1 (LO THRU 2 = 1)(ELSE = 0) INTO filt_1.

***应用变量标签。
VARIABLE LABELS filt_1 'Filter out cases with 3 or more missings on q1 to q9'.

***激活筛选变量。
FILTER BY filt_1.

***重新检查 q1 到 q9 的缺失值数量。
FREQUENCIES mis_1.

结果

SPSS Filter Frequency Table

请注意,SPSS 现在报告 456 个案例,而不是 464 个案例。 具有 3 个或更多缺失值的 8 个案例仍然在我们的数据中,但它们已从所有分析中排除。 我们可以在数据视图中看到原因,如下所示。

SPSS Active Filter In Data View

个案 21 在 q1 到 q9 上有 8 个缺失值,我们将其重新编码为筛选变量上的零。

其 $casenum 上的删除线表明个案 21 当前已被筛选掉。

状态栏确认筛选变量已生效。 最后,让我们通过简单地运行 FILTER OFF 来停用我们的筛选器。 我们会将筛选变量 filt_1 留在数据中。 它不会以任何方式打扰我们。

示例 2 - 基于 2 个变量进行筛选

对于某些其他分析,我们只想使用在销售或市场部门工作的女性受访者。 一个好的起点是运行一个非常简单的列联表,如下所示。

***在后续输出表中显示值和值标签。
SET TNUMBERS BOTH.

***显示每种性别的职务类型频率。
CROSSTABS gender BY jtype.

结果

SPSS Crosstabs Example

如我们的表格所示,我们有 181 名在销售或市场部门工作的女性受访者。 现在,我们将创建一个新的筛选变量,仅包含零。 然后,我们将使用一个简单的 IF 命令将其设置为 1,用于我们的案例选择。

***创建仅包含零的筛选变量。
COMPUTE filt_2 = 0.

***将筛选器设置为 1,用于职务类型为 1 和 2 的女性。
IF(gender = 0 & jtype <= 2) filt_2 = 1.

***应用变量标签。
VARIABLE LABELS filt_2 'Filter in females working in sales and marketing'.

***激活筛选器。
FILTER BY filt_2.

***确认筛选器正常工作。
CROSSTABS gender BY jtype.

重新运行我们的列联表(未显示)确认 SPSS 现在仅报告在营销或销售部门工作的 181 名女性案例。 另请注意,我们现在在数据中有 2 个筛选变量,这很好,但任何时候只能激活 1 个筛选变量。 好的。 让我们也使用 FILTER OFF 停用我们的新筛选变量。

示例 3 - 不使用筛选变量进行筛选

经验丰富的 SPSS 用户可能知道:

  • TEMPORARY 可以“撤消”随后的一些数据编辑,并且
  • SELECT IF 会永久从您的数据中删除案例。

通过将它们组合起来,您可以避免创建筛选变量的需要,但一次只能进行 1 个分析。 以下示例显示了这一点:第一个 CROSSTABS 仅限于案例选择,但也回滚了我们的案例删除。 因此,第二个 CROSSTABS 再次包括所有案例。

***使以下转换成为临时的。
TEMPORARY.

***删除案例,除非 gender = 1 & jtype = 3。
SELECT IF (gender = 1 & jtype = 3).

***交叉表仅包括 IT 部门的男性,并回滚案例选择。
CROSSTABS gender BY jtype.

***交叉表再次包括所有案例。
CROSSTABS gender BY jtype.

提示 - 具有内置筛选器的命令

您可能想知道的另一件事是,某些命令具有内置筛选器。 这些是

  • REGRESSION(回归),
  • LOGISTIC REGRESSION(逻辑回归),
  • FACTOR(因子)和
  • DISCRIMINANT(判别)。

SPSS Filter Built Into Regression Dialog

该对话框建议您可以仅基于 1 个变量来筛选案例(仅适用于此命令)。 我怀疑您也可以在生成的 /SELECT 子命令上输入更复杂的条件。 我没有尝试过。

在任何情况下,我认为这些内置筛选器可能非常方便,并且我有点困惑它们仅限于上述 4 个命令。

警告 - 使用筛选器进行数据编辑

SPSS 中的大多数数据编辑不受筛选的影响。 例如,计算变量的均值(computing means)对于变量(如以下所示)会影响_所有_案例,无论激活了哪个筛选器。 因此,我们需要 DO IFIF 将此转换限制为案例选择。 但是,活动的筛选器_确实_会影响_跨案例_的函数。 我们将在下面演示的一些示例是:

  • 使用 AGGREGATE 添加案例计数;
  • 计算一个或多个变量的 Z 分数;
  • 使用 RANK 添加排名或 百分位数

受筛选器影响的 SPSS 数据编辑示例

***重新激活女性销售筛选器。
FILTER BY filt_2.

***不受筛选器影响:将 q1 到 q9 的均值添加到数据。
COMPUTE mean_1 = MEAN(q1 TO q9).
EXECUTE.

***受筛选器影响:将案例计数添加到数据。
AGGREGATE OUTFILE * MODE ADDVARIABLES
/ofreq = N.

***受筛选器影响:将工资 Z 分数添加到数据。
DESCRIPTIVES salary
/SAVE.

***受筛选器影响:将中位数组工资添加到数据。
RANK salary
/NTILES(2) INTO med_salary.

结果

SPSS Filter And Data Editing

好吧。 这几乎就是关于 SPSS 中筛选的所有内容。 希望您觉得本教程有帮助。